GtkConstraintSolver *constraint_solver;
GdkToplevelLayout *layout;
+
+ GdkCursor *resize_cursor;
} GtkWindowPrivate;
enum {
gdouble x,
gdouble y)
{
+ GtkWindow *window = GTK_WINDOW (widget);
+ GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
gint i;
const gchar *cursor_names[8] = {
"nw-resize", "n-resize", "ne-resize",
"sw-resize", "s-resize", "se-resize"
};
+ g_clear_object (&priv->resize_cursor);
+
for (i = 0; i < 8; i++)
{
if (edge_under_coordinates (GTK_WINDOW (widget), x, y, i))
{
- gtk_widget_set_cursor_from_name (widget, cursor_names[i]);
- return;
+ priv->resize_cursor = gdk_cursor_new_from_name (cursor_names[i], NULL);
+ break;
}
}
- gtk_widget_set_cursor (widget, NULL);
+ gtk_window_maybe_update_cursor (window, widget, NULL);
}
static void
g_clear_object (&priv->constraint_solver);
g_clear_object (&priv->renderer);
+ g_clear_object (&priv->resize_cursor);
G_OBJECT_CLASS (gtk_window_parent_class)->finalize (object);
}
GtkWidget *grab_widget,
GtkWidget *target)
{
+ GtkWindowPrivate *priv = gtk_window_get_instance_private (toplevel);
GdkCursor *cursor = NULL;
GdkSurface *surface;
if (surface != gtk_native_get_surface (gtk_widget_get_native (target)))
break;
- cursor = gtk_widget_get_cursor (target);
+ if (target == GTK_WIDGET (toplevel) && priv->resize_cursor != NULL)
+ cursor = priv->resize_cursor;
+ else
+ cursor = gtk_widget_get_cursor (target);
if (cursor)
break;